package main.leetcode.offer.firstround.from03to50;

import main.datastruc.ListNode;

/**
 * 24.反转链表
 *
 * <p>定义一个函数，输入一个链表的头节点，反转该链表并输出反转后链表的头节点。
 *
 * <p>
 *
 * <p>示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
 *
 * <p>限制：0 <= 节点个数 <= 5000
 *
 * <p>来源：力扣（LeetCode） 链接：https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class ex24 {

    public ListNode reverseList(ListNode head) {
        ListNode newHead = new ListNode(0);
        ListNode pre = head, after;
        ListNode p;
        while (pre != null) {
            after = newHead.next;
            newHead.next = pre;
            p = pre.next;
            pre.next = after;
            pre = p;
        }
        return newHead.next;
    }
}
